/*
   Copyright (c) 2021 https://github.com/me-no-dev
   SPDX-License-Identifier: GPL-3.0-or-later
*/
#ifndef SPIFFSEditor_H_
#define SPIFFSEditor_H_
#include <ESPAsyncWebServer.h>

class SPIFFSEditor : public AsyncWebHandler
{
private:
  mutable fs::FS _fs;
  String _username;
  String _password;
  bool _authenticated;
  uint32_t _startTime;

public:
#ifdef ESP32
  SPIFFSEditor(const fs::FS &fs, const String &username = String(), const String &password = String());
#else
  SPIFFSEditor(const String &username = String(), const String &password = String(), const fs::FS &fs = SPIFFS);
#endif
  virtual bool canHandle(AsyncWebServerRequest *request) const override final;
  virtual void handleRequest(AsyncWebServerRequest *request) override final;
  virtual void handleUpload(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final) override final;
  virtual bool isRequestHandlerTrivial() const override final { return false; }
  virtual String listFilesRecursively(String path, bool recursive = false);
};

#endif
